#pragma once
/*--------------------------------------------------------------------------------
 * Adaptive Intelligence - Foundation Framework Class Library
 * Version 2.00
 * 
 * DNS Query Class
 *      Provides a static method for performing advanced DNS queries.
 *------------------------------------------------------------------------------*/

/*--------------------------------------------------------------------------------
 * System Imports
 *------------------------------------------------------------------------------*/
#include "stdafx.h"
using namespace System;
using namespace System::Net;

namespace Adaptive
{
	namespace Network
	{
		namespace Dns
		{
			/// <summary>
			/// Provides a static method for performing advanced DNS queries.
			/// </summary>
			public ref class DnsQuery sealed
			{
			private:
				/// <summary>
				/// Initializes a new instance of the class.
				/// </summary>
				/// <summary>
				/// This constructor is hidden to prevent instantiation.
				/// </summary>
				DnsQuery();

			internal:
				static String^ TransformForReverseIp(IPAddress^ original);

			public:
				/// <summary>
				/// Executes a DNS Query.
				/// </summary>
				/// <param name="addressOrDomainName">A string containing the address or domain name to be queried.</param>
				/// <param name="queryType">A <see cref="DnsQueryType"/> enumerated value indicating the query type.</param>
				/// <param name="options">A <see cref="DnsQueryOption"/> enumerated value containing the option flags for the query.</param>
				/// <returns>
				/// An array of <see cref="ManagedDnsRecord"/> instances containing the result(s) of the query.
				/// </returns>
				static array<ManagedDnsRecord^>^ PerformDnsQuery(String^ addressOrDomainName, DnsQueryType queryType, DnsQueryOption options);
			};
		}
	}
}